import data from "../../core/cache_data";
import { Network } from "./network";
import { ProtocolObjectRoom, ProtocolS2CLoginUser, ProtocolS2CRegUser, ProtocolS2CUpdateRoom } from "./protocol_dist";

export class User {
    static get userId() {
        return data.storage.get("user-id", "");
    }
    static set userId(val) {
        data.storage.set("user-id", val);
    }

    static room: ProtocolObjectRoom = null;

    static Init() {
        Network.AddListener(ProtocolS2CRegUser, this.onRegUser, this);
        Network.AddListener(ProtocolS2CLoginUser, this.onLoginUser, this);
        Network.AddListener(ProtocolS2CUpdateRoom, this.onUpdateRoom, this);
    }
    static onRegUser(msg: ProtocolS2CRegUser) {
        if (msg.ok) {
            this.userId = msg.user.token;
        }
    }
    static onLoginUser(msg: ProtocolS2CLoginUser) {
        if (msg.ok) {
            this.userId = msg.user.token;
        }
    }
    static onUpdateRoom(msg: ProtocolS2CUpdateRoom) {
        if (msg.room) {
            Object.assign(this.room, msg.room);
        }
    }
};

window["user"] = User;